import java.util.HashMap;
import java.util.Map;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 23735
 * Date: 2022-10-19
 * Time: 19:44
 */
public class Main {
    //滑动窗口
    public int lengthOfLongestSubstring(String s) {
        int max=0;
        int left=0;
        Map<Character,Integer> map=new HashMap<>();
        for(int i=0;i<s.length();i++){
            char ch=s.charAt(i);
            //如果已经有了
            if(map.containsKey(ch)){
                int begin=map.get(ch);
                //这里注意要判断一下,因为窗口前面的元素并没有删除
                if(begin>=left){
                    int length=i-left;
                    //是否修改最大值
                    max=max>length?max:length;
                    //修改最左边的下标
                    left=begin+1;
                }
            }
            map.put(ch,i);
        }
        //最后那个窗口的长度
        int last=s.length()-left;
        return max>last?max:last;
    }
}
